Typical edge detection schemes (Sobel, Canny, etc.) produce a binary output because after the gradient operators are applied, a threshold is applied to the result. Any pixels greater than the threshold are declared edges. The binary detected edge images are often unsatisfactory. Existing edge highlighting schemes retain the original image, but attempt to enhance the edges while leaving the rest of the image unchanged. Often, this is nothing more than the binary edge detection superimposed on the original image. There are two problems with the output image in this case. The first is that strong edges are highlighted more than mid-level edges, which are really where the interesting information is found (the noise is represented by the weak edges). The second problem is that the edges are either bright or dark, which often does not produce the optimal result. Ideally, the edge-highlighted image should enhance the mid-level edges more than the strong and weak edges, and the highlighting should consider whether the edge is in a dark region of the image (use bright highlighting) or a bright region of the image (use dark highlighting).
Prior systems made no attempt to emphasize weaker edges over stronger edges. In most case, the strong edges are quite obvious (e.g., a large shadow traversing the image) so there is no use in highlighting these edges further. Otherwise, prior systems would enhance all edges uniformly, which can amplify the noise and make the image look grainy. Other methods highlight the edges unidirectionally by either forcing them dark or light with the decision made a priori, without regard to the image content. This often produces suboptimal results because many images contain both light and dark regions simultaneously. Other prior systems use complicated decision circuitry to classify the edges as straight, angled, light, or dark so they can be adjusted differently. These rules make the edge highlighting systems unnecessarily complex and also may cause them to fail at strong edges.